<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>function对象</title>
    </head>
    <body>
        <!--
        Function:函数(方法)对象
        1.创建3种方式
            1. var fun= new Function(形式参数列表,方法体);//忘掉
            2.function 方法名称 (形式参数列表){方法体}
            3.var 方法名称 = function (形式参数列表){方法体}
        2.方法
        3.属性
            length:形式参数的个数
        4.特点
            1.方法定义是形参的类型不用写,返回值类型也不写
            2.方法是一个对象,如果定义名称相同的方法,会覆盖
            3.在JS中,方法的调用只与方法的名称有关,和实际的参数列表无关
            4.在方法声明中有一个隐藏的内置对象(数组)arguments,封装所有的实际参数

        5.调用:方法名称(实际参数列表);

        -->
        <script>
            //1.创建
            var fun1 = new Function("a", "b", "c", "alert(a);");

            function fun2(a, b) {
                alert(a + b);
            }

            var fun3 = function (a, b) {
                alert(a - b);
            }
            //方法的覆盖
            fun2 = function (a, b) {
                alert(a);
                alert(b);
            }

            //2.调用方法
            //fun1(1,2,3,4);
            //fun2(1,2);
            //fun2(1);
            //fun2();
            //fun2(1,2,3);
            //  fun3(1,2);

            //3.属性
            // alert(fun1.length)
            // alert(fun2.length)
            //alert(fun3.length)


            /*求2个数的和*/
            /*  function add(a,b){
                 return (a+b);
              }
             var sum= add(1,2);
              alert(sum)*/

            /*求任意个数的和*/
            function add() {
                var sum = 0;
                for (var i = 0; i < arguments.length; i++) {
                    sum += arguments[i];
                    return sum;
                }
            }

            var sum = add(1, 2, 3);
            alert(sum);


        </script>


    </body>
</html>